package models

type WorldVersionReuquset struct {
	///小玩法app_id
	AppId string `json:"app_id"`
	//是否是线上版本，默认为false，为false代表测试数据
	IsOnlineVersion bool `json:"is_online_version"`
	//开发者指定已经上传完成的榜单版本
	WorldRankVersion string `json:"world_rank_version"`
	//上传完成时间，秒级时间戳，默认为当前接口请求时间
	CompleteTime int64 `json:"complete_time"`
	//用户累计战绩数据列表
	RankList []UserRankData `json:"rank_list"`
}

type SyncWorldRankResult struct {
	///小玩法app_id
	AppId string `json:"app_id"`
	//是否是线上版本，默认为false，为false代表测试数据
	IsOnlineVersion bool `json:"is_online_version"`
	//开发者指定已经上传完成的榜单版本
	WorldRankVersion string         `json:"world_rank_version"`
	UserList         []UserRankData `json:"user_list"`
}

type UserRankData struct {
	OpenId             string `json:"open_id"`
	Rank               int64  `json:"rank"`
	Score              int64  `json:"score"`
	WinningStreakCount int64  `json:"winning_streak_count"`
	WinningPoints      int64  `json:"winning_points"`
}

type WorldVersionResponse struct {
	ErrorMessage string `json:"errmsg"`
	ErrorCode    int64  `json:"errcode"`
}

// / 游戏排行榜数据
type UserRankBasic struct {
	PlayerId   string `bson:"playerId, omitempty" json:"playerId"`
	PlayerName string `bson:"playerName" json:"playerName"`
	Energy     uint64 `bson:"energyValue" json:"energyValue"`
	RankNumber uint   `bson:"rankNumber" json:"rankNumber"`
	AvatarUrl  string `bson:"avatar_url" json:"avatar_url"`
	TeamIndex  int64  `json:"teamIndex"`
}

// / 游戏对局数据
type SyncGameStatusData struct {
	AnchorOpenId    string               `bson:"anchor_open_id" json:"anchor_open_id"`
	AppId           string               `bson:"app_id" json:"app_id"`         // 主播id
	RoomId          string               `bson:"room_id" json:"room_id"`       // 房间id
	RoundId         int64                `bson:"round_id" json:"round_id"`     // 当前回合 （使用开始游戏时间戳）
	StartTime       int64                `bson:"start_time" json:"start_time"` // 本局游戏开始时间
	EndTime         int64                `bson:"end_time" json:"end_time"`     // 本局游戏结束时间
	Status          int                  `bson:"status" json:"status"`         // 当前房间的游戏对局状态（1=已开始、2=已结束）
	GroupResultList []SyncGameResultData `bson:"group_result_list" json:"group_result_list"`
}

type SyncGameResultData struct {
	GroupId string `bson:"group_id" json:"group_id"` /// 阵营id  yellow  blue
	Result  int    `bson:"result" json:"result"`     /// 对局结果（1=胜利、2=失败、3=平局）
}

// 上报玩家游戏数据
type UploadTopUserGameData struct {
	AnchorOpenId string           `bson:"anchor_open_id" json:"anchor_open_id"`
	AppId        string           `bson:"app_id" json:"app_id"`
	RoomId       string           `bson:"room_id" json:"room_id"`
	RoundId      int64            `bson:"round_id" json:"round_id"`
	RankList     []UploadUserData `bson:"rank_list" json:"rank_list"`
}

// 上报玩家游戏数据
type UploadUserGameData struct {
	AnchorOpenId string           `bson:"anchor_open_id" json:"anchor_open_id"`
	AppId        string           `bson:"app_id" json:"app_id"`
	RoomId       string           `bson:"room_id" json:"room_id"`
	RoundId      int64            `bson:"round_id" json:"round_id"`
	UserList     []UploadUserData `bson:"user_list" json:"user_list"`
	RankList     []UploadUserData `bson:"rank_list" json:"rank_list"`
}
type UploadUserData struct {
	OpenId             string `bson:"open_id" json:"open_id"`
	Rank               int64  `bson:"rank" json:"rank"`
	RoundResult        int    `bson:"round_result" json:"round_result"` //对局结果（1=胜利、2=失败、3=平局）
	Score              int64  `bson:"score" json:"score"`
	WinningPoints      int64  `bson:"winning_points" json:"winning_points"`
	WinningStreakCount int64  `bson:"winning_streak_count" json:"winning_streak_count"`
	GroupId            string `bson:"group_id" json:"group_id"` // 阵营Id，比如 red/blue
}

type CompleteUploadUserResult struct {
	AnchorOpenId string `bson:"anchor_open_id" json:"anchor_open_id"`
	AppId        string `bson:"app_id" json:"app_id"`
	RoomId       string `bson:"room_id" json:"room_id"`
	RoundId      int64  `bson:"round_id" json:"round_id"`
	CompleteTime int64  `bson:"complete_time" json:"complete_time"`
}

type UploadUserGroupInfo struct {
	AppId   string `json:"app_id"`
	GroupId string `json:"group_id"`
	OpenId  string `json:"open_id"`
	RoomId  string `json:"room_id"`
	RoundId string `json:"round_id"`
}

// / 平台请求当前用户信息
type TiktokUserInfoRequest struct {
	AppId  string `json:"app_id"`
	OpenId string `json:"open_id"`
	RoomId string `json:"room_id"`
}

type TiktokUserInfoResponse struct {
	ErrorCode int64                      `json:"errcode"`
	ErrorMsg  string                     `json:"errmsg"`
	Data      TiktokUserInfoResponseData `json:"data"`
}
type TiktokUserInfoResponseData struct {
	RoundId         int64  `json:"round_id"`
	RoundStatus     int    `json:"round_status"`
	UserGroupStatus int    `json:"user_group_status"`
	GroupId         string `json:"group_id"`
}

// / 用户选择阵营
type TiktokUserSelectGroupRequest struct {
	AppId     string `json:"app_id"`
	OpenId    string `json:"open_id"`
	RoomId    string `json:"room_id"`
	GroupId   string `json:"group_id"`
	AvatarUrl string `json:"avatar_url"`
	NickName  string `json:"nick_name"`
}
type TiktokUserSelectGroupResponse struct {
	ErrorCode int64                    `json:"errcode"`
	ErrorMsg  string                   `json:"errmsg"`
	Data      UserSelectResultResponse `json:"data"`
}
type UserSelectResultResponse struct {
	RoundId     int64  `json:"round_id"`
	RoundStatus int    `json:"round_status"`
	GroupId     string `json:"group_id"`
}
